home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Personal Computer World 2009 February
/
PCWFEB09.iso
/
Software
/
Linux
/
Kubuntu 8.10
/
kubuntu-8.10-desktop-i386.iso
/
casper
/
filesystem.squashfs
/
usr
/
share
/
defoma
/
libhint-cmap.pl
< prev
next >
Wrap
Text File
|
2006-06-17
|
3KB
|
101 lines
sub sethint_cmap {
my $font = shift;
my $line;
my $flag = 0;
my $cmapname = '';
my $cidregistry = '';
my $cidordering = '';
my $cidsupplement = '';
my $fontfilename = $font;
$fontfilename =~ s/.*\/(.*)/$1/;
open(F, $font) || exitfunc(1, "$font: Unable to open.");
while (<F>) {
$line = $_;
chomp($line);
if ($line =~ /\/CMapName[ \t]/) {
$cmapname = $line;
$cmapname =~ s/.*\/CMapName[ \t]+\/([^ \t]+).*/$1/;
} elsif ($line =~ /\/CIDSystemInfo[ \t]/) {
$flag = 1;
} elsif ($flag == 1 && $line =~ /end[ \t]+def/) {
$flag = 0;
} elsif ($flag == 1 && $line =~ /\/Registry[ \t]/) {
$cidregistry = $line;
$cidregistry =~ s/.*\/Registry[ \t]+\((.*)\).*/$1/;
} elsif ($flag == 1 && $line =~ /\/Ordering[ \t]/) {
$cidordering = $line;
$cidordering =~ s/.*\/Ordering[ \t]+\((.*)\).*/$1/;
} elsif ($flag == 1 && $line =~ /\/Supplement[ \t]/) {
$cidsupplement = $line;
$cidsupplement =~ s/.*\/Supplement[ \t]+(.).*/$1/;
}
if ($cmapname ne '' && $cidordering ne '' && $cidregistry ne '' &&
$cidsupplement ne '') {
last;
}
}
close F;
if ($cmapname eq '' || $cidordering eq '' || $cidregistry eq '' ||
$cidsupplement eq '') {
exitfunc(1, "Some information aren't found in $fontfilename.\nAborting..");
}
my $charset = '';
my $encoding = '';
if (open(F, "$DEFOMA_TEST_DIR/etc/defoma/ps-cset-enc.data")) {
while (<F>) {
$line = $_;
chomp($line);
next if ($line =~ /^\#/);
my @list = split(' ', $line);
next if (@list < 3);
$list[0] =~ s/\*/\.\*/g;
$list[0] =~ s/\?/\./g;
$list[1] =~ s/\*/\.\*/g;
$list[1] =~ s/\?/\./g;
if ("$cidregistry-$cidordering-$cidsupplement" =~ /^($list[0])$/) {
if ($cmapname =~ /^($list[1])$/) {
if ($list[2] ne 'ignore') {
$charset = $list[2];
$charset =~ s/,/ /g;
$encoding = $list[3] if (@list >= 4);
}
last;
}
}
}
close F;
}
my $hints = "--CMapName $cmapname";
$hints .= " --CIDRegistry $cidregistry";
$hints .= " --CIDOrdering $cidordering";
$hints .= " --CIDSupplement $cidsupplement";
$hints .= " --Charset $charset" if ($charset =~ /\S/);
$hints .= " --Encoding $encoding" if ($encoding =~ /\S/);
$hints .= " --Direction Horizontal"
if ($cmapname =~ /\-H$/ || $cmapname eq 'H');
$hints .= " --Direction Vertical"
if ($cmapname =~ /\-V$/ || $cmapname eq 'V');
return $hints;
}
1;